﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ServiceOperater.Behaviors
{
    // 实现这个接口代表需要反馈相关信息
    interface IFeedback
    {
        /// <summary>
        /// 所有希望得到被改变相关信息的对象都应该实现这个接口
        /// </summary>
        /// <param name="modifyVals">被改变的字段名, 和改变前的值,改变后的值</param>
        /// <param name="dataContext">当前dataContext</param>
        void Feedback(Dictionary<String, Tuple<Object, Object>> modifyVals, Object dataContext);

        /// <summary>
        /// 检索变化, 为了尽量减少TransactionBehavior的关联性, 故增加该方法; 如果有需要检索变化情况来进行某些操作时,实现该方法; 
        ///  例如我们需要Service, Action的原始唯一性标识去更新文件; 为了不让TransactionBehavior知晓Service,Action的存在.
        ///   1. 通过实现该接口, service,action通过发送message来进行orgin主键的更新
        /// </summary>
        /// <param name="modifyVals">被改变的字段名, 和改变前的值,改变后的值</param>
        /// <param name="dataContext">当前dataContext</param>
        void RetrievalChange(Dictionary<String, Tuple<Object, Object>> modifyVals,Object dataContext);
    }
}
